package plugin

import (
	"sync"
)

// PluginManager 管理插件的注册和消息的异步处理
type PluginManager struct {
	mu      sync.Mutex
	Plugins map[string]Plugin
}

// NewPluginManager 创建一个新的 PluginManager 实例
func NewPluginManager() *PluginManager {
	return &PluginManager{
		Plugins: make(map[string]Plugin),
	}
}

// RegisterPlugin 注册一个插件
func (pm *PluginManager) RegisterPlugin(name string, plugin Plugin) {
	pm.mu.Lock()
	defer pm.mu.Unlock()
	pm.Plugins[name] = plugin
}

// EnablePlugin 启用一个插件
func (pm *PluginManager) EnablePlugin(name string) {
	pm.mu.Lock()
	defer pm.mu.Unlock()
	if plugin, ok := pm.Plugins[name]; ok {
		plugin.IsEnabled()
	}
}

// DisablePlugin 禁用一个插件
func (pm *PluginManager) DisablePlugin(name string) {
	pm.mu.Lock()
	defer pm.mu.Unlock()
	if plugin, ok := pm.Plugins[name]; ok {
		plugin.IsEnabled()
	}
}
